<?php
/**
 * Styles pour menu déroulant
 *
 * Largement inspiré de données sur le net et de sarka-spip.
 * 
 * Usage : est normalement appelé par style-ecran.php, voir ce fichier
 * pour la documentation complète.
 *
 * @author     Luc Chatefau <luc.chatefau@ac-poitiers.fr>
 * @author     Philippe MARASSE <philippe.marasse@ac-poitiers.fr>
 * @copyright  Division Informatique et Réseaux - Académie de Poitiers
 * @license    http://www.opensource.org/licenses/gpl-license.php
 */
require_once('../classes/http/class.dirapHttpIMS.inc.php');

header('Content-Type: text/css; charset=utf-8');

// Prise en charge des requêtes If-Modified-Since
$ims = dirapHttpIMS::getInstance();

// Timestamp de base : celui de ce fichier
$ims->setTimestamp(filemtime(__FILE__));

$baseCss = array();
if (isset($_GET['modele'])) {
    $modele = preg_replace('/[^a-z0-9]+/','',$_GET['modele']);
    $filename = 'modeles/css-'.$modele.'.ini';
    if (file_exists($filename)) {
        // Prise en compte du timestamp du modèle
        $ims->setNewerTimestamp(filemtime($filename));
        
        // Avant le parse, on stoppe le traitement si le fichier n'a pas été modifié
        $ims->doIfModifiedSince();
        
        $baseCss = parse_ini_file($filename,true);
        echo "/* Modèle chargé : $filename */\n";
    }
}

// Stoppe l'exécution si le fichier n'a pas été modifié.
$ims->doIfModifiedSince();

// Doit-on envoyer les quirks pour IE ?
$hackie = isset($_GET['iebugs']) ? true : false;

/**
 * Paramètres modifiables 
 *  - Hauteur du menu : h (mini 20px, recommandé 30px)
 *  - Largeur d'un élément de menu horizontal : l  (recommandé 92px)
 *  - Largeur d'un élément de menu vertical   : L  (recommandé 180px)
 *  Ne pas modifier la largeur des bordures (ou en tirer les conséquences
 *  pour les corrections de bugs IE)
 */

if (! isset($baseCss['menu'])) { $baseCss['menu'] = array(); }
if (! isset($baseCss['menu']['hauteur'])) {
    $baseCss['menu']['hauteur'] = 30;        // Hauteur en pixels
}
if (! isset($baseCss['menu']['largeur-h'])) {
    $baseCss['menu']['largeur-h'] = 92;      // Largeur d'élément horiz. en pixels
}
if (! isset($baseCss['menu']['largeur-v'])) {
    $baseCss['menu']['largeur-v'] = 180;      // Largeur d'élément vert. en pixels
}
if (! isset($baseCss['menu']['color-h'])) {
    $baseCss['menu']['color-h'] = '#000';      // Couleur d'élément horizontal
}
if (! isset($baseCss['menu']['color-v'])) {
    $baseCss['menu']['color-v'] = '#000';      // Couleur d'élément vertical
}
if (! isset($baseCss['menu']['bgcolor-h'])) {
    $baseCss['menu']['bgcolor-h'] = '#F0D0DD'; // Couleur de fond élément horizontal
}
if (! isset($baseCss['menu']['bgcolor-v'])) {
    $baseCss['menu']['bgcolor-v'] = '#FBEFF4'; // Couleur de fond élément vertical
}
if (! isset($baseCss['menu']['border-color-h'])) {
    $baseCss['menu']['border-color-h'] = '#000';    // bordure d'élément horizontal
}
if (! isset($baseCss['menu']['border-color-v'])) {
    $baseCss['menu']['border-color-v'] = '#415A23'; // bordure d'élément vertical
}
if (! isset($baseCss['menu']['border-color-i'])) {
    $baseCss['menu']['border-color-i'] = '#666'; // bordure d'élément vertical
}
if (! isset($baseCss['menu']['hover-color'])) {
    $baseCss['menu']['hover-color'] = '#fff';      // Survol : Couleur des liens
}
if (! isset($baseCss['menu']['hover-bgcolor'])) {
    $baseCss['menu']['hover-bgcolor'] = '#ED7BA6'; // survol : Fond des liens
}
if (! isset($baseCss['menu']['hover-weight'])) {
    $baseCss['menu']['hover-weight'] = 'normal';   // survol : Poids de la police
}

// echo "/*\n";
// print_r($baseCss);
// echo "\n*/";

?>
/* bloc contenant la hiérarchie des menus */ 

.menucontainer { 
    width: 100%; 
    font-size: 12px; 
    color: <?php echo $baseCss['menu']['color-h']; ?>; 
    background-color: <?php echo $baseCss['menu']['bgcolor-h']; ?>;
    height: <?php echo $baseCss['menu']['hauteur']; ?>px;  /* = h */ 
    margin: 0 0 .5em 0; 
    padding: 0; 
    border-top: 1px solid <?php echo $baseCss['menu']['border-color-h']; ?>; 
    border-bottom: 1px solid <?php echo $baseCss['menu']['border-color-h']; ?>; 
} 

/* Menu horizontal */ 
ul.menulist { 
    list-style: none; 
    margin: 0;
    padding: 0; 
    border: none; 
} 

/* Elément de menu horizontal */ 
ul.menulist li { 
    color: <?php echo $baseCss['menu']['color-h']; ?>; 
    background-color: <?php echo $baseCss['menu']['bgcolor-h']; ?>; 
    float: left; 
    width: <?php echo $baseCss['menu']['largeur-h']; ?>px; /* = l */ 
    text-align: center; 
    border-right: 1px solid <?php echo $baseCss['menu']['border-color-v']; ?>; 
    line-height: <?php echo $baseCss['menu']['hauteur']; ?>px;  /* = h */ 
} 

/* permet d'afficher une bordure sur le premier element */ 
ul.menulist .first { 
    border-left: 1px solid <?php echo $baseCss['menu']['border-color-v']; ?>; 
    line-height: <?php echo $baseCss['menu']['hauteur']; ?>px; /* = h */ 
} 

/* premier sous menu vertical */ 
ul.menulist li ul {
    color: <?php echo $baseCss['menu']['color-v']; ?>; 
    background-color: <?php echo $baseCss['menu']['bgcolor-v']; ?>; 
    display: none; 
    position: absolute; 
    border: 1px solid <?php echo $baseCss['menu']['border-color-i']; ?>; 
    border-bottom: 0px; 
    list-style: none; 
    margin: 0; 
    padding: 0; 
    width: <?php echo $baseCss['menu']['largeur-v']; ?>px;             /* = L */
<?php if ($hackie) { ?>
    /* Correction bug IE */ 
    _width: <?php echo $baseCss['menu']['largeur-v']+2; ?>px;          /* = L + 2 */ 
    _margin-left: <?php echo - (intval($baseCss['menu']['largeur-h']/2 + 1)) ?>px; /* = - (l/2 + 1) */
<?php } ?>
} 

/* sélecteur hover : affiche le sous menu UL quand on met la souris sur 
 * l'élément parent LI */ 
ul.menulist li:hover>ul { 
    display: block; 
}

/* Element de liste de premier sous menu vertical */ 
ul.menulist li ul li { 
    color: <?php echo $baseCss['menu']['color-v']; ?>; 
    background-color: <?php echo $baseCss['menu']['bgcolor-v']; ?>; 
    width: <?php echo $baseCss['menu']['largeur-v']; ?>px;             /* = L */ 
    position: relative; 
    margin: 0; 
    padding: 0; 
    border: none;
    border-bottom: 1px solid #666; text-align: left;
<?php if ($hackie) { ?>
    /* Correction bug IE */ 
    _width: <?php echo $baseCss['menu']['largeur-v']+2; ?>px;          /* = L + 2 */
<?php } ?>
} 

/* Style commun des liens du menu horizontal */ 
ul.menulist a,ul.menulist a:visited { 
    display: block; 
    color: <?php echo $baseCss['menu']['color-h']; ?>; 
    background-color: <?php echo $baseCss['menu']['bgcolor-h']; ?>; 
    text-decoration: none; 
    padding: 0;
<?php if ($hackie) { ?>
    /* Correction bug IE */ 
    _width: 100%;
<?php } ?>
} 

/* Style commun des liens de menu horizontal - sélecteur hover */
ul.menulist a:hover { 
    color: <?php echo $baseCss['menu']['hover-color']; ?>; 
    background-color: <?php echo $baseCss['menu']['hover-bgcolor']; ?>; 
    font-weight: <?php echo $baseCss['menu']['hover-weight']; ?>;
    text-decoration: none;
<?php if ($hackie) { ?>
    /* Correction bug IE */ 
    _width: 100%;
<?php } ?>
} 

/* Style commun des liens des sous-menu tous niveaux */ 
ul.menulist ul li a,ul.menulist ul li a:visited { 
    display: block; 
    color: <?php echo $baseCss['menu']['color-h']; ?>; 
    background-color: transparent; 
    padding: 0 0 0 5px; 
    text-decoration: none; 
}

/* Sélecteur hover des liens de sous menus tous niveaux */
ul.menulist ul li a:hover { 
    color: <?php echo $baseCss['menu']['hover-color']; ?>; 
    background-color: <?php echo $baseCss['menu']['hover-bgcolor']; ?>; 
    font-weight: <?php echo $baseCss['menu']['hover-weight']; ?>;
    text-decoration: none;
<?php if ($hackie) { ?>
    /* Correction bug IE */ _width: 100%;
<?php } ?>
} 

/* Quand l'élément de sous-menu a un sous-menu, on affiche une flèche */ 
ul.menulist li.smenu { 
    color: <?php echo $baseCss['menu']['color-v']; ?>; 
    background-color: <?php echo $baseCss['menu']['bgcolor-v']; ?>; 
    background-image: url('../icones/menu/arrow.gif') !important;
    background-position: <?php echo $baseCss['menu']['largeur-v']-9; ?>px; /* = L - 9 */ 
    background-repeat: no-repeat; 
}

ul.menulist li.smenu:hover,ul.menulist li.smenu>a:hover { 
    color: <?php echo $baseCss['menu']['hover-color']; ?>; 
    background-color: <?php echo $baseCss['menu']['hover-bgcolor']; ?>; 
    background-image: url('../icones/menu/arrowb.gif') !important;
    background-position: <?php echo $baseCss['menu']['largeur-v']-11; ?>px; /* = L - 11 */ 
    background-repeat: no-repeat; 
} 

/* Second sous menu et suivants : il faut changer la position... */ 
li.smenu ul li.smenu ul { 
    position: absolute; 
    top: -1px; 
    left: <?php echo $baseCss['menu']['largeur-v']; ?>px;              /* = L */
<?php if ($hackie) { ?>
    /* Correction bug IE */ 
    _left: <?php echo $baseCss['menu']['largeur-v']+7; ?>px; /* = L + 7 */ 
    _margin-left: 0px;
<?php } ?>
}
